#pragma once
#include <Eigen/Dense>
#include <opencv2/opencv.hpp>
#include <pcl/common/transforms.h>

template <typename T>
class Point2Pixel{
public:
    Point2Pixel();
    virtual ~Point2Pixel()=0;
    void init(const Eigen::Affine3f transform_A0,const cv::Mat cameraMatrix0,const cv::Mat distCoeffs0,std::string pos0="unknown",int id=0);
    virtual cv::Point2d loop(const T& point)=0;

    Eigen::Affine3f transform_A;//base_link to 相机内外参矩阵
    cv::Mat cameraMatrix;  //相机内参矩阵
    cv::Mat distCoeffs;    //畸变系数

    int _id;
    std::string _pos;
};
